#!/bin/sh
set -e

TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"

setupenvironment
configarchitecture 'i386' 'amd64'

generatelotsofnames() {
	for i in $(seq 0 10000); do
		printf ', this-is-a-long-pkg-name-%s (= 0.a.long.version)' "$i"
	done
}

DESCR='Some description
 That has multiple lines'
insertpackage 'unstable' 'foo' 'all' '1.0' '' '' "$DESCR"
insertpackage 'unstable' 'bar' 'i386,amd64' '1' '' '' "$DESCR"
insertpackage 'unstable' 'big' 'i386,amd64' '1' 'Installed-Size: 4129421' '' "$DESCR"
insertpackage 'unstable' 'large' 'all' '1' "Provides: pkga$(generatelotsofnames)" '' "$DESCR"
insertpackage 'unstable' 'large2' 'all' '1' "Provides: foobar, pkga$(generatelotsofnames)" '' "$DESCR"
insertpackage 'unstable' 'multi' 'all' '1.0' '' '' "$DESCR"
insertpackage 'unstable' 'multi' 'all' '2.0' '' '' "$DESCR"
insertinstalledpackage 'foo' 'all' '1.0'

setupaptarchive

APTARCHIVE=$(readlink -f ./aptarchive)

# note that we do not display Description-md5 with the "apt" cmd
# and also show some additional fields that are calculated
testsuccessequal "Package: foo
Version: 1.0
Priority: optional
Section: other
Maintainer: Joe Sixpack <joe@example.org>
Installed-Size: 43.0 kB
Download-Size: 42 B
APT-Manual-Installed: yes
APT-Sources: file:$APTARCHIVE unstable/main all Packages
Description: Some description
 That has multiple lines
" apt show foo
testsuccessequal "Package: foo
Version: 1.0
Priority: optional
Section: other
Maintainer: Joe Sixpack <joe@example.org>
Installed-Size: 43.0 kB
Filename: pool/main/foo/foo_1.0_all.deb
SHA256: 0000000000000000000000000000000000000000000000000000000000000000
Download-Size: 42 B
APT-Manual-Installed: yes
APT-Sources: file:$APTARCHIVE unstable/main all Packages
Description: Some description
 That has multiple lines
" apt show foo --full
testsuccessequal "Package: bar
Version: 1
Priority: optional
Section: other
Maintainer: Joe Sixpack <joe@example.org>
Installed-Size: 43.0 kB
Download-Size: 42 B
APT-Sources: file:$APTARCHIVE unstable/main i386 Packages
Description: Some description
 That has multiple lines
" apt show bar
testsuccessequal "Package: bar:amd64
Version: 1
Priority: optional
Section: other
Maintainer: Joe Sixpack <joe@example.org>
Installed-Size: 43.0 kB
Download-Size: 42 B
APT-Sources: file:$APTARCHIVE unstable/main amd64 Packages
Description: Some description
 That has multiple lines
" apt show bar:amd64
testsuccessequal "Package: big:amd64
Version: 1
Priority: optional
Section: other
Maintainer: Joe Sixpack <joe@example.org>
Installed-Size: 4229 MB
Download-Size: 42 B
APT-Sources: file:$APTARCHIVE unstable/main amd64 Packages
Description: Some description
 That has multiple lines
" apt show big:amd64

testsuccessequal "Package: large
Version: 1
Priority: optional
Section: other
Maintainer: Joe Sixpack <joe@example.org>
Installed-Size: 43.0 kB
Provides: pkga$(generatelotsofnames)
Download-Size: 42 B
APT-Sources: file:$APTARCHIVE unstable/main all Packages
Description: Some description
 That has multiple lines
" apt show large
testsuccessequal "Package: large2
Version: 1
Priority: optional
Section: other
Maintainer: Joe Sixpack <joe@example.org>
Installed-Size: 43.0 kB
Provides: foobar, pkga$(generatelotsofnames)
Download-Size: 42 B
APT-Sources: file:$APTARCHIVE unstable/main all Packages
Description: Some description
 That has multiple lines
" apt show large2

# Test for multiple versions
testsuccessequal "Package: multi
Version: 2.0
Priority: optional
Section: other
Maintainer: Joe Sixpack <joe@example.org>
Installed-Size: 43.0 kB
Download-Size: 42 B
APT-Sources: file:$APTARCHIVE unstable/main all Packages
Description: Some description
 That has multiple lines

N: There is 1 additional record. Please use the '-a' switch to see it" apt show multi

testsuccessequal "Package: multi
Version: 2.0
Priority: optional
Section: other
Maintainer: Joe Sixpack <joe@example.org>
Installed-Size: 43.0 kB
Download-Size: 42 B
APT-Sources: file:$APTARCHIVE unstable/main all Packages
Description: Some description
 That has multiple lines

Package: multi
Version: 1.0
Priority: optional
Section: other
Maintainer: Joe Sixpack <joe@example.org>
Installed-Size: 43.0 kB
Download-Size: 42 B
APT-Sources: file:$APTARCHIVE unstable/main all Packages
Description: Some description
 That has multiple lines
" apt show multi -a

# test apt info
testsuccessequal "Package: multi
Version: 2.0
Priority: optional
Section: other
Maintainer: Joe Sixpack <joe@example.org>
Installed-Size: 43.0 kB
Download-Size: 42 B
APT-Sources: file:$APTARCHIVE unstable/main all Packages
Description: Some description
 That has multiple lines

N: There is 1 additional record. Please use the '-a' switch to see it" apt info multi

testsuccessequal "Package: multi
Version: 2.0
Priority: optional
Section: other
Maintainer: Joe Sixpack <joe@example.org>
Installed-Size: 43.0 kB
Download-Size: 42 B
APT-Sources: file:$APTARCHIVE unstable/main all Packages
Description: Some description
 That has multiple lines

Package: multi
Version: 1.0
Priority: optional
Section: other
Maintainer: Joe Sixpack <joe@example.org>
Installed-Size: 43.0 kB
Download-Size: 42 B
APT-Sources: file:$APTARCHIVE unstable/main all Packages
Description: Some description
 That has multiple lines
" apt info multi -a

# this is the default, but disabled by the testcases
testsuccess apt show foo -o Apt::Cmd::Disable-Script-Warning=0
cp rootdir/tmp/testsuccess.output aptshow.output
testsuccess grep '^WARNING: ' aptshow.output

if [ "$(id -u)" != '0' ]; then
	testsuccess apt install foo -s -o APT::Get::Show-User-Simulation-Note=1
	cp rootdir/tmp/testsuccess.output aptshow.output
	testsuccess grep '^NOTE: ' aptshow.output
fi
